home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / docs / ippon / data / expl / expllite.lzh / fxsp2lib.c < prev    next >
C/C++ Source or Header  |  1998-11-15  |  2KB  |  98 lines

  1. /* fxsp2lib.c */
  2.  
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5.  
  6.  
  7. typedef struct {
  8.     signed short vx;    /* 相対座標データ */
  9.     signed short vy;    /* 相対座標データ */
  10.     unsigned short pt;    /* スプライトパターンNo. */
  11.     unsigned short rv;    /* 反転コード */
  12. } SP_WORK;
  13.  
  14. static FILE *fp;
  15. static int pattern_no;
  16. static int sprite_no;
  17.  
  18.  
  19.  
  20. short fxsp_on (void)
  21. {
  22.     if ((fp = fopen ("temp001.obj", "wb")) == NULL) {
  23.         printf ("ファイルを書き込めません\n");
  24.         return (-1);
  25.     }
  26.     fprintf (fp, "\nPCG_FILE    =    ***.sp    256    * 使用する PCG データ\n"
  27.          "\n"
  28.          "XY_OFFSET    =    $0000    $0000    * 座標のオフセット\n"
  29.          "PT_OFFSET    =    $0000        * PCGパターンナンバーのオフセット\n"
  30.          "OBJ_RV        =    $0000        * 全体の反転コード\n"
  31.          "\n");
  32.     pattern_no = 0;
  33.     sprite_no = 0;
  34.     return (0);
  35. }
  36.  
  37.  
  38.  
  39. static void write_pos (signed short pos)
  40. {
  41.     signed short p = pos;
  42.  
  43.     if (p < 0)
  44.         fprintf (fp, "-$%04hx    ", -p);
  45.     else
  46.         fprintf (fp, " $%04hx    ", p);
  47.  
  48.     return;
  49. }
  50.  
  51.  
  52.  
  53. /* xsp_set_st と置き換えて使うと引き数の構造体を .obj ファイルに書き出す */
  54. short fxsp_set_st (void *sp_work0)
  55. {
  56.     SP_WORK *sp_work = (SP_WORK *) sp_work0;
  57.  
  58.     if (!sprite_no) {
  59.         fprintf (fp,
  60.              "******************************** 複合スプライトパターン %3d ****\n\n"
  61.              "No.    =    NEXT    * 複合スプライトのパターンナンバー\n"
  62.              "            * 左から順に、X Y PT RV (以下同様)\n"
  63.              ,pattern_no);
  64.     }
  65.     fprintf (fp, "    ");
  66.     write_pos (sp_work->vx);
  67.     write_pos (sp_work->vy);
  68.  
  69.     fprintf (fp, "$%04x    ", sp_work->pt);
  70.     fprintf (fp, "$%04x\n", sp_work->rv);
  71.     sprite_no++;
  72.  
  73.     return (0);
  74. }
  75.  
  76.  
  77.  
  78. short fxsp_out (void)
  79. {
  80.     short s = sprite_no;
  81.     fprintf (fp, "\n\n");
  82.     pattern_no++;
  83.     sprite_no = 0;
  84.  
  85.     return (s);
  86. }
  87.  
  88.  
  89.  
  90. short fxsp_off (void)
  91. {
  92.     if (fp != NULL)
  93.         fclose (fp);
  94.     fp = NULL;
  95.  
  96.     return (0);
  97. }
  98.